<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScript" inherits="Script" category="Core" version="3.0.alpha.custom_build">
	<brief_description>
		A script implemented in the Visual Script programming environment.
	</brief_description>
	<description>
		A script implemented in the  Visual Script programming environment. The script extends the functionality of all objects that instance it.
		[method Object.set_script] extends an existing object, if that object's class matches one of the script's base classes.
		You are most likely to use this class via the Visual Script editor or when writing plugins for it.
	</description>
	<tutorials>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="add_custom_signal">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Add a custom signal with the specified name to the VisualScript.
			</description>
		</method>
		<method name="add_function">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Add a function with the specified name to the VisualScript.
			</description>
		</method>
		<method name="add_node">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<argument index="2" name="node" type="VisualScriptNode">
			</argument>
			<argument index="3" name="position" type="Vector2" default="Vector2( 0, 0 )">
			</argument>
			<description>
				Add a node to a function of the VisualScript.
			</description>
		</method>
		<method name="add_variable">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="default_value" type="Variant" default="null">
			</argument>
			<argument index="2" name="export" type="bool" default="false">
			</argument>
			<description>
				Add a variable to the VisualScript, optionally giving it a default value or marking it as exported.
			</description>
		</method>
		<method name="custom_signal_add_argument">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="type" type="int" enum="Variant.Type">
			</argument>
			<argument index="2" name="argname" type="String">
			</argument>
			<argument index="3" name="index" type="int" default="-1">
			</argument>
			<description>
				Add an argument to a custom signal added with [method add_custom_signal].
			</description>
		</method>
		<method name="custom_signal_get_argument_count" qualifiers="const">
			<return type="int">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Get the count of a custom signal's arguments.
			</description>
		</method>
		<method name="custom_signal_get_argument_name" qualifiers="const">
			<return type="String">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="argidx" type="int">
			</argument>
			<description>
				Get the name of a custom signal's argument.
			</description>
		</method>
		<method name="custom_signal_get_argument_type" qualifiers="const">
			<return type="int" enum="Variant.Type">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="argidx" type="int">
			</argument>
			<description>
				Get the type of a custom signal's argument.
			</description>
		</method>
		<method name="custom_signal_remove_argument">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="argidx" type="int">
			</argument>
			<description>
				Remove a specific custom signal's argument.
			</description>
		</method>
		<method name="custom_signal_set_argument_name">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="argidx" type="int">
			</argument>
			<argument index="2" name="argname" type="String">
			</argument>
			<description>
				Rename a custom signal's argument.
			</description>
		</method>
		<method name="custom_signal_set_argument_type">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="argidx" type="int">
			</argument>
			<argument index="2" name="type" type="int" enum="Variant.Type">
			</argument>
			<description>
				Change the type of a custom signal's argument.
			</description>
		</method>
		<method name="custom_signal_swap_argument">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="argidx" type="int">
			</argument>
			<argument index="2" name="withidx" type="int">
			</argument>
			<description>
				Swap two of the arguments of a custom signal.
			</description>
		</method>
		<method name="data_connect">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="from_node" type="int">
			</argument>
			<argument index="2" name="from_port" type="int">
			</argument>
			<argument index="3" name="to_node" type="int">
			</argument>
			<argument index="4" name="to_port" type="int">
			</argument>
			<description>
				Connect two data ports. The value of [code]from_node[/code]'s [code]from_port[/code] would be fed into [code]to_node[/code]'s [code]to_port[/code].
			</description>
		</method>
		<method name="data_disconnect">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="from_node" type="int">
			</argument>
			<argument index="2" name="from_port" type="int">
			</argument>
			<argument index="3" name="to_node" type="int">
			</argument>
			<argument index="4" name="to_port" type="int">
			</argument>
			<description>
				Disconnect two data ports previously connected with [method data_connect].
			</description>
		</method>
		<method name="get_function_node_id" qualifiers="const">
			<return type="int">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns the id of a function's entry point node.
			</description>
		</method>
		<method name="get_function_scroll" qualifiers="const">
			<return type="Vector2">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns the position of the center of the screen for a given function.
			</description>
		</method>
		<method name="get_node" qualifiers="const">
			<return type="VisualScriptNode">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<description>
				Returns a node given its id and its function.
			</description>
		</method>
		<method name="get_node_position" qualifiers="const">
			<return type="Vector2">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<description>
				Returns a node's position in pixels.
			</description>
		</method>
		<method name="get_variable_default_value" qualifiers="const">
			<return type="Variant">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns the default (initial) value of a variable.
			</description>
		</method>
		<method name="get_variable_export" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns whether a variable is exported.
			</description>
		</method>
		<method name="get_variable_info" qualifiers="const">
			<return type="Dictionary">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns the info for a given variable as a dictionary. The information includes its name, type, hint and usage.
			</description>
		</method>
		<method name="has_custom_signal" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns whether a signal exists with the specified name.
			</description>
		</method>
		<method name="has_data_connection" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="from_node" type="int">
			</argument>
			<argument index="2" name="from_port" type="int">
			</argument>
			<argument index="3" name="to_node" type="int">
			</argument>
			<argument index="4" name="to_port" type="int">
			</argument>
			<description>
				Returns whether the specified data ports are connected.
			</description>
		</method>
		<method name="has_function" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns whether a function exists with the specified name.
			</description>
		</method>
		<method name="has_node" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<description>
				Returns whether a node exists with the given id.
			</description>
		</method>
		<method name="has_sequence_connection" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="from_node" type="int">
			</argument>
			<argument index="2" name="from_output" type="int">
			</argument>
			<argument index="3" name="to_node" type="int">
			</argument>
			<description>
				Returns whether the specified sequence ports are connected.
			</description>
		</method>
		<method name="has_variable" qualifiers="const">
			<return type="bool">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Returns whether a variable exists with the specified name.
			</description>
		</method>
		<method name="remove_custom_signal">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Remove a custom signal with the given name.
			</description>
		</method>
		<method name="remove_function">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Remove a specific function and its nodes from the script.
			</description>
		</method>
		<method name="remove_node">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<description>
				Remove a specific node.
			</description>
		</method>
		<method name="remove_variable">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<description>
				Remove a variable with the given name.
			</description>
		</method>
		<method name="rename_custom_signal">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="new_name" type="String">
			</argument>
			<description>
				Change the name of a custom signal.
			</description>
		</method>
		<method name="rename_function">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="new_name" type="String">
			</argument>
			<description>
				Change the name of a function.
			</description>
		</method>
		<method name="rename_variable">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="new_name" type="String">
			</argument>
			<description>
				Change the name of a variable.
			</description>
		</method>
		<method name="sequence_connect">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="from_node" type="int">
			</argument>
			<argument index="2" name="from_output" type="int">
			</argument>
			<argument index="3" name="to_node" type="int">
			</argument>
			<description>
				Connect two sequence ports. The execution will flow from of [code]from_node[/code]'s [code]from_output[/code] into [code]to_node[/code].
				Unlike [method data_connect], there isn't a [code]to_port[/code], since the target node can have only one sequence port.
			</description>
		</method>
		<method name="sequence_disconnect">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="from_node" type="int">
			</argument>
			<argument index="2" name="from_output" type="int">
			</argument>
			<argument index="3" name="to_node" type="int">
			</argument>
			<description>
				Disconnect two sequence ports previously connected with [method sequence_connect].
			</description>
		</method>
		<method name="set_function_scroll">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="ofs" type="Vector2">
			</argument>
			<description>
				Position the center of the screen for a function.
			</description>
		</method>
		<method name="set_instance_base_type">
			<return type="void">
			</return>
			<argument index="0" name="type" type="String">
			</argument>
			<description>
				Set the base type of the script.
			</description>
		</method>
		<method name="set_node_position">
			<return type="void">
			</return>
			<argument index="0" name="func" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<argument index="2" name="position" type="Vector2">
			</argument>
			<description>
				Position a node on the screen.
			</description>
		</method>
		<method name="set_variable_default_value">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="value" type="Variant">
			</argument>
			<description>
				Change the default (initial) value of a variable.
			</description>
		</method>
		<method name="set_variable_export">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="enable" type="bool">
			</argument>
			<description>
				Change whether a variable is exported.
			</description>
		</method>
		<method name="set_variable_info">
			<return type="void">
			</return>
			<argument index="0" name="name" type="String">
			</argument>
			<argument index="1" name="value" type="Dictionary">
			</argument>
			<description>
				Set a variable's info, using the same format as [method get_variable_info].
			</description>
		</method>
	</methods>
	<members>
		<member name="data" type="Dictionary" setter="_set_data" getter="_get_data">
		</member>
	</members>
	<signals>
		<signal name="node_ports_changed">
			<argument index="0" name="function" type="String">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<description>
				Emitted when the ports of a node are changed.
			</description>
		</signal>
	</signals>
	<constants>
	</constants>
</class>
